The present disclosure relates generally to methods and system for blending animation data to generate realistic computer animation.
Computer animation involves specifying objects, their behavior, lighting, etc. and submitting data representing animator selections to an animation system that reads that data and performs the necessary calculations to determine how objects in a virtual or simulated environment would behave, move, look, etc. The animation result is then often rendered for display on a 2D or 3D display. In modern animation, the demands for visual expression prevent an animator from manually specifying the specific details of each pixel in each frame of animation. Instead, the animator specifies objects, lighting, effects, and their characteristics and the animation system computes frames of animation images that might represent what the animator specified.
Creating realistic animated sequences can present difficulties depending on the number of moving objects and characters in a given animated sequence. The movement of the animated objects and characters themselves may also present problems in easily generating realistic animated sequences.
Previously, some animators would choose to animate certain “major” characters while leaving other background characters as static and unchanging. However, this would result in less realistic and dynamic animated sequences.
Solutions that tried to address the issue required significant expenditure of time and energy. For example, the movement of the object could be specified point-by-point, frame-by-frame. The animator could specify inputs or constraints, such as the (x, y, z) coordinates of an elbow, leg, bone, anchor point, etc. for a collection of object points at a collection of times, and a kinematics engine could specify positions of those objects in each frame, applying those constraints. If an object entirely followed kinematically specified constraints, the animator could simply specify the constraints for an edge (e.g., start or finish) of a clip and the animation of the object would result in the object being at the same position at the start and finish of a clip.
However, this process can be tedious or intractable depending on the number of animated objects present in a particular scene, as the animator would be required to specify inputs or constraints for each and every object and character. Such is the case in animated sequence including a significant number of objects or characters (e.g., hundreds of animated characters in flowing garments or with flowing hair). Also, as some objects, such as hair or clothing, have no natural joints which can be constrained, animating point-by-point and frame-by-frame may produce less natural movement.
Jitter may also be an issue that arises with animation data. In order to reduce jitter caused by fast moving animated objects, one solution is to specify the inputs or constraints for an object (e.g. hair or cloth) along with the animated character. This solution also has the drawback of being difficult and time-consuming as the number of animated characters increases.
In some solutions, blending is done by running a simulation engine for the animated sequence and when two animated sequences are joined, simply blending the positions of points based on a fixed window. However, this solution may not consistently provide a seamless blend as uniform blending often introduces intersections in the animated model, such as a garment intersecting the body of an animated character.
Other solutions attempt to merely average point positions of an object across multiple frames and then use an average value as a new point position. However, this solution creates additional problems when the animated sequence involves fast motion, resulting in loss of sync between an animated character and the animated character's clothing or hair. For example, if the animated character moved a significant distance in a short period of time, the average point position of the clothing across multiple frames may not create enough movement, resulting in increased jitter.
Accordingly, what is desired are improved methods and apparatuses for solving some of the problems discussed above with respect to rendering realistic animated images, while reducing at least the drawbacks described above.